1. Technical Field
The present invention relates in general to the field of data processing systems, and more particularly, the present invention relates to processing data within data processing systems. Still more particularly, the present invention relates to a system and method for more efficiently processing data within multithreaded data processing systems.
2. Description of the Related Art
There is a pressure on the computer industry to increase the computing power and efficiency of microprocessors. The desire is especially evident in the server computer field where entire businesses are dependent on their computer infrastructure to carry out and monitor day to day activities that affect revenue and the like. Increased microprocessor performance will provide additional resources for computer users while providing a mechanism for computer manufacturers to distinguish themselves from the competition.
One technique utilized to improve microprocessor performance involves the capacity for a microprocessor to handle multithreaded execution. Threads enable a program to split itself into two or more simultaneously running tasks. Multiple threads can be executed in parallel in many computer systems. Thus, multithreading generally occurs by time slicing, which involves a single processor switching between different threads. Most modern computers utilize multithreading to enable a user to run more than one program at once (e.g., typing in a word processing program while simultaneously listening to music via an audio playback program). Though it appears to the user that the programs are running simultaneously, the processor is actually switching back and forth between the threads. On a multiprocessor or multi-core system, threading can be achieved via multiprocessors, wherein different threads and processes can literally run simultaneously on different processors.
Normally, in a multiprocessor that can handle multithreaded execution, also known as a simultaneously multithreaded (SMT) microprocessor, resource facilities are not shared between multiple threads (i.e., thread 0 facilities are only available to thread 0, while thread 1 facilities are only available to thread 1). During multithreaded execution, the processing of one thread among the multiple threads may take priority over the other threads. For example, a first thread (e.g., thread 0) may be performing a time-sensitive, processor-intensive operation and a second thread (e.g., thread 1) is performing a less important operation. In the prior art, there is no way to prioritize processing between threads, despite the fact that the first thread (e.g., thread 0) is performing a time-sensitive, processor-intensive operation. Therefore, there is a need to overcome the abovementioned limitations of the prior art.